package view.friend
{
import framework.utils.TextUtil;
import framework.view.components.container.RepeaterRenderProxy;
import framework.view.components.graphics.Asset;

import values.friend.FriendValue;

/**
 * FriendListItemRenderProxy
 * @author jliang
 * 
 */
public class FriendListItemRenderProxy extends RepeaterRenderProxy
{
	//==========================================================================
	//  Constructor
	//==========================================================================
	public function FriendListItemRenderProxy()
	{
		super();
	}
	//==========================================================================
	//  Variables
	//==========================================================================
	private var asset:Asset;
	//==========================================================================
	//  Overridden methods: RepeaterRenderProxy
	//==========================================================================
	private var vo:FriendValue;
	
	override public function set data(value:*):void
	{
		vo = value;
		
		if (asset)
		{
			if (asset.parent)
			{
				asset.parent.removeChild(asset);
			}
			asset.dispose();
			asset = null;
		}
		
		if (vo == null)
		{
			skin.gotoAndStop(2);
		}
		else
		{
			update();
			/*
			if (vo.isDataReady)
			{
				update();
			}
			else
			{
				skin.gotoAndStop(3);
				SocialService.instance.getSocialUserInfo(vo.playerID, dataReadyHandler);
			}
			*/
		}		
	}
	
	override public function get data():*
	{
		return vo;
	}
	
	override public function dispose():void
	{
		if (asset)
		{
			if (asset.parent)
			{
				asset.parent.removeChild(asset);
			}
			asset.dispose();
			asset = null;
		}
		super.dispose();
	}
	//==========================================================================
	//  Private methods
	//==========================================================================
	private function update():void
	{
		skin.gotoAndStop(1);
		
		TextUtil.setText(skin["nameLabel"], vo.name);
		TextUtil.setText(skin["levelLabel"], String(vo.level));
	}
	//==========================================================================
	//  Event handlers
	//==========================================================================
	private function iconLoadedHandler(asset:Asset):void
	{
		skin["holder"].addChild(asset);
		asset.width = 54;
		asset.height = 54;
	}
}
}